
//Copyright 1997-2009 Syrinx Development, Inc.
//This file is part of the Syrinx Web Application Framework (SWAF).
// == BEGIN LICENSE ==
//
// Licensed under the terms of any of the following licenses at your
// choice:
//
//  - GNU General Public License Version 3 or later (the "GPL")
//    http://www.gnu.org/licenses/gpl.html
//
//  - GNU Lesser General Public License Version 3 or later (the "LGPL")
//    http://www.gnu.org/licenses/lgpl.html
//
//  - Mozilla Public License Version 1.1 or later (the "MPL")
//    http://www.mozilla.org/MPL/MPL-1.1.html
//
// == END LICENSE ==
using System;
using System.Diagnostics;
using System.Data;

using Swaf;

namespace Swaf.DataAccess
{
	public class AdoNetConnectionItem : BasicConnectionItem
	{
		protected IDbTransaction m_trans = null;
		public AdoNetConnectionItem(IDbConnection c)
			:base(c, 1)
		{
		}

		public override void forceClose()
		{
			((IDbConnection)Connection).Close();
			((IDbConnection)Connection).Dispose();
		}

		public override void beginTrans()
		{
			m_trans = ((IDbConnection)Connection).BeginTransaction(IsolationLevel.ReadCommitted);
		}

		public override void rollback()
		{
			if(m_trans != null)
				m_trans.Rollback();
		}

		public override void commit()
		{
			if(m_trans != null)
				m_trans.Commit();
		}

		public override object ConnectionTrans{get{return m_trans;}}

		public override bool isCacheable
		{
			get { return false; }
		}

		public override void refresh()
		{
			// do nothing
		}
	}
}